package cn.com.chengmandian.sls.utils;


import cn.com.chengmandian.sls.constants.CabinetLogType;
import cn.com.chengmandian.sls.pojo.CabinetLogData;

public class CabinetLogBuilder {

    public static CabinetLogBuilder instance;

    public static CabinetLogBuilder me() {
        if (instance == null) instance = new CabinetLogBuilder();
        return instance;
    }

    // 其它消息输出
    public String other(String message, String productKey) {
        return new CabinetLogData().setProductKey(productKey)
                .setProductKey(productKey)
                .setMessage(message)
                .toString();
    }

    // 设备其它消息输出
    public String other(String message, String productKey, String deviceNo) {
        return new CabinetLogData().setProductKey(productKey)
                .setMessage(message)
                .setDeviceNo(deviceNo)
                .toString();
    }

    // 设备其它消息输出
    public String other(String message, String productKey, String deviceNo, Object data) {
        return new CabinetLogData().setProductKey(productKey)
                .setMessage(message)
                .setDeviceNo(deviceNo)
                .setData(data != null ? data.toString() : null)
                .toString();
    }

    // 错误消息输出
    public String exception(String message, String productKey) {
        return new CabinetLogData().setType(CabinetLogType.EXCEPTION.name())
                .setProductKey(productKey)
                .setMessage(message)
                .toString();
    }

    // 设备错误消息输出
    public String exception(String message, String productKey, String deviceNo) {
        return new CabinetLogData().setType(CabinetLogType.EXCEPTION.name())
                .setProductKey(productKey)
                .setMessage(message)
                .setDeviceNo(deviceNo)
                .toString();
    }

    // 自定义消息输出
    public String write(String message, CabinetLogType logType, String productKey) {
        return new CabinetLogData().setType(logType.name())
                .setProductKey(productKey)
                .setMessage(message)
                .toString();
    }

    // 设备自定义消息输出
    public String write(String message, CabinetLogType logType, String productKey, String deviceNo) {
        return new CabinetLogData().setType(logType.name())
                .setProductKey(productKey)
                .setDeviceNo(deviceNo)
                .setMessage(message)
                .toString();
    }

    // 自定义消息输出 + 数据
    public String write(String message, CabinetLogType logType, String productKey, Object data) {
        return new CabinetLogData().setType(logType.name())
                .setProductKey(productKey)
                .setMessage(message)
                .setData(data != null ? data.toString() : null)
                .toString();
    }

    // 线程设备自定义消息输出 + 数据
    public String write(String message, CabinetLogType logType, String productKey, String deviceNo, Object data) {
        return new CabinetLogData().setType(logType.name())
                .setProductKey(productKey)
                .setDeviceNo(deviceNo)
                .setMessage(message)
                .setData(data != null ? data.toString() : null)
                .toString();
    }

    public String write(String message, CabinetLogType logType, String productKey, String deviceNo, Object data, String chargeNo) {
        return new CabinetLogData().setType(logType.name())
                .setProductKey(productKey)
                .setDeviceNo(deviceNo)
                .setChargeNo(chargeNo)
                .setMessage(message)
                .setData(data != null ? data.toString() : null)
                .toString();
    }
}
